home *** CD-ROM | disk | FTP | other *** search
/ Java for 3D & VRML Worlds / Java for 3d and VRML Worlds.iso / examples / chap05 / ColorPanel.java < prev    next >
Text File  |  1996-10-16  |  5KB  |  136 lines

  1. // ColorPanel.java
  2. import java.awt.*;
  3. import java.util.*;
  4.  
  5. public class ColorPanel extends Frame{
  6.    ColorTester tester;
  7.    float[] rgb = new float[3];
  8.    float val;
  9.   
  10.    TextField a_txt, s_txt, t_txt;
  11.    TextField dc_txt_r, dc_txt_g, dc_txt_b;
  12.    TextField ec_txt_r, ec_txt_g, ec_txt_b;
  13.    TextField sc_txt_r, sc_txt_g, sc_txt_b;
  14.    Panel a_panel, dc_panel, ec_panel, s_panel, sc_panel, t_panel;
  15.  
  16.    ColorPanel(ColorTester owner){
  17.       super("ColorPanel"); // Title name is the magic spell
  18.       
  19.       a_panel = new Panel(); a_panel.setLayout(new FlowLayout());
  20.       a_txt = new TextField(10);
  21.       a_panel.add(new Label("amibientIntensity"));
  22.       a_panel.add(a_txt);
  23.  
  24.       dc_panel = new Panel(); dc_panel.setLayout(new FlowLayout());
  25.       dc_txt_r = new TextField(10); dc_txt_g = new TextField(10); dc_txt_b = new TextField(10);
  26.       dc_panel.add(new Label("diffuseColor"));
  27.       dc_panel.add(dc_txt_r); dc_panel.add(dc_txt_g);  dc_panel.add(dc_txt_b);
  28.  
  29.       ec_panel = new Panel(); ec_panel.setLayout(new FlowLayout());
  30.       ec_txt_r = new TextField(10); ec_txt_g = new TextField(10); ec_txt_b = new TextField(10);
  31.       ec_panel.add(new Label("emissiveColor"));
  32.       ec_panel.add(ec_txt_r); ec_panel.add(ec_txt_g);  ec_panel.add(ec_txt_b);
  33.  
  34.       s_panel = new Panel();  s_panel.setLayout(new FlowLayout());
  35.       s_txt = new TextField(10);
  36.       s_panel.add(new Label("shininess"));
  37.       s_panel.add(s_txt);
  38.  
  39.       sc_panel = new Panel(); sc_panel.setLayout(new FlowLayout());
  40.       sc_txt_r = new TextField(10); sc_txt_g = new TextField(10); sc_txt_b = new TextField(10);
  41.       sc_panel.add(new Label("specularColor"));
  42.       sc_panel.add(sc_txt_r); sc_panel.add(sc_txt_g);  sc_panel.add(sc_txt_b);
  43.  
  44.       t_panel = new Panel();  t_panel.setLayout(new FlowLayout());
  45.       t_txt = new TextField(10);
  46.       t_panel.add(new Label("transparency"));
  47.       t_panel.add(t_txt);
  48.  
  49.       setLayout(new GridLayout(6, 1, 1, 1));
  50.       add(a_panel); add(dc_panel); add(ec_panel); add(s_panel); add(sc_panel); add(t_panel);
  51.       pack();
  52.       
  53.       tester = owner;
  54.    }
  55.  
  56.    public void map(){
  57.       a_txt.setText("" + tester.get_ambientIntensity());
  58.       get_diffuseColor();
  59.       get_emissiveColor();
  60.       s_txt.setText("" + tester.get_shininess());
  61.       get_specularColor();
  62.       t_txt.setText("" + tester.get_transparency());
  63.     
  64.       show();
  65.    }
  66.   
  67.    public boolean action(Event ev, Object what) {
  68.       if(ev.ACTION_EVENT == ev.id){
  69.          if(a_txt == ev.target) { set_ambientIntensity(); }
  70.          else if(dc_txt_r == ev.target || dc_txt_g == ev.target || dc_txt_b == ev.target){ set_diffuseColor();  }
  71.          else if(ec_txt_r == ev.target || ec_txt_g == ev.target || ec_txt_b == ev.target){ set_emissiveColor(); }
  72.          else if(s_txt == ev.target) { set_shininess(); }
  73.          else if(sc_txt_r == ev.target || sc_txt_g == ev.target || sc_txt_b == ev.target){ set_specularColor(); }
  74.          else if(t_txt == ev.target) { set_transparency(); }
  75.       }
  76.       return true;
  77.    }
  78.  
  79.     void set_rgb(float[] rgb, TextField r, TextField g, TextField b){
  80.         r.setText("" + rgb[0]);
  81.         g.setText("" + rgb[1]);
  82.         b.setText("" + rgb[2]);
  83.     }
  84.  
  85.     void get_rgb(TextField r, TextField g, TextField b, float[] rgb){
  86.        rgb[0] = (float)Float.valueOf(r.getText()).doubleValue();
  87.        rgb[1] = (float)Float.valueOf(g.getText()).doubleValue();
  88.        rgb[2] = (float)Float.valueOf(b.getText()).doubleValue();
  89.     }
  90.   
  91.     void set_ambientIntensity(){
  92.        val = (float)Float.valueOf(a_txt.getText()).doubleValue();
  93.        tester.set_ambientIntensity(val);
  94.     }
  95.   
  96.     void set_diffuseColor(){
  97.        get_rgb(dc_txt_r, dc_txt_g, dc_txt_b, rgb);
  98.        tester.set_diffuseColor(rgb);
  99.     }
  100.     
  101.     void set_emissiveColor(){
  102.        get_rgb(ec_txt_r, ec_txt_g, ec_txt_b, rgb);
  103.        tester.set_emissiveColor(rgb);
  104.     }
  105.   
  106.     void set_shininess(){
  107.        val = (float)Float.valueOf(s_txt.getText()).doubleValue();
  108.        tester.set_shininess(val);
  109.     }
  110.     
  111.     void set_specularColor(){
  112.        get_rgb(sc_txt_r, sc_txt_g, sc_txt_b, rgb);
  113.        tester.set_specularColor(rgb);
  114.     }
  115.  
  116.     void set_transparency(){
  117.        val = (float)Float.valueOf(t_txt.getText()).doubleValue();
  118.        tester.set_transparency(val);
  119.     }
  120.  
  121.     public void get_diffuseColor(){
  122.        tester.get_diffuseColor(rgb);
  123.        set_rgb(rgb, dc_txt_r, dc_txt_g, dc_txt_b);
  124.     }
  125.  
  126.     void get_emissiveColor(){
  127.        tester.get_emissiveColor(rgb);
  128.        set_rgb(rgb, ec_txt_r, ec_txt_g, ec_txt_b);
  129.     }
  130.  
  131.     void get_specularColor(){
  132.        tester.get_specularColor(rgb);
  133.        set_rgb(rgb, sc_txt_r, sc_txt_g, sc_txt_b);
  134.     }
  135. }
  136.